package com.woniuxy.java102vuecli;

import com.woniuxy.java102vuecli.entity.Role;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;

//@SpringBootTest
class Java102vuecliApplicationTests01 {


    @Test
    public void testStream04() {
        List<String> paths=new ArrayList<>();
        paths.add("/a/remove");
        paths.add("/a/add");
        paths.add(null);
        paths.add("/a/get");

        String uri="/a/remove/**";

        List<String> results = paths.stream().filter(path -> path!=null && uri.contains(path)).collect(Collectors.toList());
        System.out.println(results);
        System.out.println( paths.stream().filter(path ->  path!=null && uri.contains(path)).count());

    }


    @Test
    public void testStream03() {
        List<Role> roles=new ArrayList<>();
        roles.add(new Role(1,"zs"));
        roles.add(new Role(2,"ls"));
        roles.add(new Role(3,"ww"));
        roles.add(new Role(4,"zl"));
        // List<Role> 将Role集合中的所有角色的名字变成一个List<String>;

        List<String> results = roles.stream()
                .filter(role -> role.getRid() > 2)
                .map(new Function<Role, String>() {
                    @Override
                    public String apply(Role role) {
                        return role.getRname();
                    }
                })
                .collect(Collectors.toList());

        System.out.println(results);

    }

    @Test
    public void testStream02() {
        List<String> strs = new ArrayList<>();
        strs.add("a");
        strs.add("ab");
        strs.add("abc");
        strs.add("abcd");
        strs.add("abcd");
        strs.add("abcd");
        strs.add("abcd");
        List<String> names = strs.stream().distinct().filter(str -> str.length() >= 3)
                //将流中的元素收集成一个集合
                .collect(Collectors.toList());
        System.out.println(names);
    }
    @Test
    public void testStream01() {
        List<String> strs = new ArrayList<>();
        strs.add("aaa");
        strs.add("bbb");
        strs.add("baz");
        strs.add("cca");
//        List<String> strsnew = new ArrayList<>();
        //输出集合中含有a的元素
//        for(String str : strs){
//            if(str.contains("a")){
//                strsnew.add(str);
//            }
//        }

        //将集合转成Stream对象
        //中间操作：filter()对Stream中的每个元素进行过滤
        //最终操作
        //转成流
        strs.stream()
                //过滤筛选
                .filter(s -> s.contains("a"))
                //输出每个元素
                .forEach(str-> System.out.println(str));


    }

    @Test
    public void testdistinctArray(){
        List<String> strs=new ArrayList<>();
        strs.add("aaa");
        strs.add("ccc");
        strs.add("ccc");
        strs.add("ccc");
        strs.add("ddd");
        strs.add("aaa");
        strs.add("bbb");
        strs.add("bbb");
        strs.add("ccc");
        strs.add("bbb");
        strs.add("bbb");
        strs.add("bbb");
        strs.add("sss");
        strs.add("sss");
        strs.add("sss");

        strs.stream()
                //去重：重写equals()
                .distinct().collect(Collectors.toList());

        System.out.println(strs.stream().distinct().collect(Collectors.toList()));

//        System.out.println(distinctArray(strs));
    }

    //字符串集合去重
    public List<String> distinctArray(List<String> strs){
        List<String> newStrs=new ArrayList<>();
        for(String str : strs){
            if(!newStrs.contains(str)){
                newStrs.add(str);
            }
        }
        return newStrs;
    }
    public void distinctArray2(List<String> strs){

    }


}
